#include<iostream>
#include<vector>
using namespace std;

class Solution {
public:
    void setZeroes(vector<vector<int>>& matrix) {
        vector<vector<int>> m;  //记录值为0的元素的位置
        int xsize = matrix.size(); //行数
        int ysize = matrix[0].size();  //列数

        for(int row=0; row<xsize; row++) {
            for(int column=0; column<ysize; column++) {
                if(matrix[row][column]==0) {
                    m.push_back({row,column}); //加到m中  m数组中每一行只有两个数据
                }
            }
        }
        // this->print(m);
        int msize = m.size(); // 0元素的个数
        for(int i=0; i<msize; i++) {
            int k = m[i][0]; // m的i行的第一个数据
            int n = m[i][1]; // m的i行的第二个数据
            for(int i=0;i<xsize;i++) {
                matrix[i][n]=0;
            }
            for(int i=0;i<ysize;i++) {
                matrix[k][i]=0;
            }
        }
    }

    void print(vector<vector<int> > matrix){
        int rows = matrix.size();
        int cols = matrix[0].size();
        for (int i = 0 ; i < rows ; i++){
            for (int j = 0 ; j < cols ; j++){
                cout << matrix[i][j] << "\t";
            }
            cout << endl;
        }
    }
};


int main(){
    vector<vector<int> > matrix = {{1,1,1},{1,0,1},{1,1,1}};

    Solution s;
    s.print(matrix);
    cout << "-----------------" << endl;
    s.setZeroes(matrix);
    s.print(matrix);
}